﻿using Renci.Data.Interop.Noaa.Ioos_061;
using Renci.Data.Interop.OpenGIS.Om_101;
using Renci.Data.Interop.OpenGIS.Xlink;

namespace Renci.Data.Interop.OpenGIS.Gml_32
{
    /// <remarks/>
    [System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038")]
    [System.SerializableAttribute()]
    [System.Diagnostics.DebuggerStepThroughAttribute()]
    [System.ComponentModel.DesignerCategoryAttribute("code")]
    [System.Xml.Serialization.XmlTypeAttribute(TypeName = "TargetPropertyType", Namespace = "http://www.opengis.net/gml/3.2")]
    [System.Xml.Serialization.XmlRootAttribute("target", Namespace = "http://www.opengis.net/gml/3.2", IsNullable = false)]
    public class TargetPropertyType : IAssociationAttributeGroup, IOwnershipAttributeGroup
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="TargetPropertyType"/> class.
        /// </summary>
        public TargetPropertyType()
        {
            this.Owns = false;
        }

        /// <remarks/>
        [System.Xml.Serialization.XmlElementAttribute("WaterBodyFeature", typeof(WaterBodyFeatureType), Namespace = "http://www.noaa.gov/ioos/0.6.1")]
        //[System.Xml.Serialization.XmlElementAttribute("AbstractCoverage", typeof(AbstractCoverageType), Namespace = "http://www.opengis.net/gml/3.2")]
        //[System.Xml.Serialization.XmlElementAttribute("AbstractDiscreteCoverage", typeof(DiscreteCoverageType), Namespace = "http://www.opengis.net/gml/3.2")]
        [System.Xml.Serialization.XmlElementAttribute("MultiPointCoverage", Type = typeof(MultiPointCoverageType))]
        [System.Xml.Serialization.XmlElementAttribute("MultiCurveCoverage", Type = typeof(MultiCurveCoverageType))]
        [System.Xml.Serialization.XmlElementAttribute("MultiSurfaceCoverage", Type = typeof(MultiSurfaceCoverageType))]
        [System.Xml.Serialization.XmlElementAttribute("MultiSolidCoverage", Type = typeof(MultiSolidCoverageType))]
        [System.Xml.Serialization.XmlElementAttribute("GridCoverage", Type = typeof(GridCoverageType))]
        [System.Xml.Serialization.XmlElementAttribute("RectifiedGridCoverage", Type = typeof(RectifiedGridCoverageType))]
        //[System.Xml.Serialization.XmlElementAttribute("AbstractContinuousCoverage", typeof(AbstractContinuousCoverageType), Namespace = "http://www.opengis.net/gml/3.2")]
        //[System.Xml.Serialization.XmlElementAttribute("AbstractFeatureCollection", typeof(AbstractFeatureCollectionType), Namespace = "http://www.opengis.net/gml/3.2")]
        [System.Xml.Serialization.XmlElementAttribute("FeatureCollection", typeof(FeatureCollectionType), Namespace = "http://www.opengis.net/gml/3.2")]
        [System.Xml.Serialization.XmlElementAttribute("DynamicFeature", typeof(DynamicFeatureType), Namespace = "http://www.opengis.net/gml/3.2")]
        [System.Xml.Serialization.XmlElementAttribute("Observation", typeof(ObservationType), Namespace = "http://www.opengis.net/gml/3.2")]
        [System.Xml.Serialization.XmlElementAttribute("Observation", typeof(Om_101.ObservationType), Namespace = "http://www.opengis.net/om/1.0")]
        [System.Xml.Serialization.XmlElementAttribute("ObservationCollection", typeof(ObservationCollectionType), Namespace = "http://www.opengis.net/om/1.0")]
        //[System.Xml.Serialization.XmlElementAttribute("AbstractFeature")]
        //[System.Xml.Serialization.XmlElementAttribute("AbstractGeometry", typeof(AbstractGeometryType))]
        //[System.Xml.Serialization.XmlElementAttribute("AbstractGeometricAggregate", Type = typeof(AbstractGeometricAggregateType))]
        [System.Xml.Serialization.XmlElementAttribute("MultiGeometry", Type = typeof(MultiGeometryType))]
        [System.Xml.Serialization.XmlElementAttribute("MultiPoint", Type = typeof(MultiPointType))]
        [System.Xml.Serialization.XmlElementAttribute("MultiCurve", Type = typeof(MultiCurveType))]
        [System.Xml.Serialization.XmlElementAttribute("MultiSurface", Type = typeof(MultiSurfaceType))]
        [System.Xml.Serialization.XmlElementAttribute("MultiSolid", Type = typeof(MultiSolidType))]
        //[System.Xml.Serialization.XmlElementAttribute("AbstractGeometricPrimitive", Type = typeof(AbstractGeometricPrimitiveType))]
        [System.Xml.Serialization.XmlElementAttribute("Point", Type = typeof(PointType))]
        //[System.Xml.Serialization.XmlElementAttribute("AbstractCurve", Type = typeof(AbstractCurveType))]
        [System.Xml.Serialization.XmlElementAttribute("LineString", Type = typeof(LineStringType))]
        [System.Xml.Serialization.XmlElementAttribute("CompositeCurve", Type = typeof(CompositeCurveType))]
        [System.Xml.Serialization.XmlElementAttribute("Curve", Type = typeof(CurveType))]
        [System.Xml.Serialization.XmlElementAttribute("OrientableCurve", Type = typeof(OrientableCurveType))]
        //[System.Xml.Serialization.XmlElementAttribute("AbstractSurface", Type = typeof(AbstractSurfaceType))]
        [System.Xml.Serialization.XmlElementAttribute("Polygon", Type = typeof(PolygonType))]
        [System.Xml.Serialization.XmlElementAttribute("CompositeSurface", Type = typeof(CompositeSurfaceType))]
        [System.Xml.Serialization.XmlElementAttribute("Surface", Type = typeof(SurfaceType))]
        [System.Xml.Serialization.XmlElementAttribute("OrientableSurface", Type = typeof(OrientableSurfaceType))]
        //[System.Xml.Serialization.XmlElementAttribute("AbstractSolid", Type = typeof(AbstractSolidType))]
        [System.Xml.Serialization.XmlElementAttribute("CompositeSolid", Type = typeof(CompositeSolidType))]
        [System.Xml.Serialization.XmlElementAttribute("Solid", Type = typeof(SolidType))]
        [System.Xml.Serialization.XmlElementAttribute("GeometricComplex", Type = typeof(GeometricComplexType))]
        //[System.Xml.Serialization.XmlElementAttribute("AbstractImplicitGeometry", Type = typeof(AbstractGeometryType))]
        [System.Xml.Serialization.XmlElementAttribute("Grid", Type = typeof(GridType))]
        public AbstractGMLType Item { get; set; }

        #region IAssociationAttributeGroup Members

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("nilReason", Namespace = "http://www.opengis.net/gml/3.2")]
        public string NilReason { get; set; }

        /// <summary>
        /// Gets or sets a reference to an XML Schema fragment that specifies the content model of the propertys value. This is in conformance with the XML Schema Section 4.14 Referencing Schemas from Elsewhere.
        /// </summary>
        [System.Xml.Serialization.XmlAttributeAttribute("remoteSchema", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "http://www.opengis.net/gml/3.2", DataType = "anyURI")]
        public string RemoteSchema { get; set; }

        #endregion

        #region ISimpleLink Members

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("type", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "http://www.w3.org/1999/xlink")]
        public string Type { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("href", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "http://www.w3.org/1999/xlink", DataType = "anyURI")]
        public string Href { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("role", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "http://www.w3.org/1999/xlink", DataType = "anyURI")]
        public string Role { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("arcrole", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "http://www.w3.org/1999/xlink", DataType = "anyURI")]
        public string ArcRole { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("title", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "http://www.w3.org/1999/xlink")]
        public string Title { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("show", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "http://www.w3.org/1999/xlink")]
        public MetadataTypeShow Show { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool ShowSpecified { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("actuate", Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "http://www.w3.org/1999/xlink")]
        public MetadataTypeActuate Actuate { get; set; }

        /// <remarks/>
        [System.Xml.Serialization.XmlIgnoreAttribute()]
        public bool ActuateSpecified { get; set; }

        #endregion   

        #region IOwnershipAttributeGroup Members

        /// <remarks/>
        [System.Xml.Serialization.XmlAttributeAttribute("owns", Namespace = "http://www.opengis.net/gml/3.2")]
        [System.ComponentModel.DefaultValueAttribute(false)]
        public bool Owns { get; set; }

        #endregion
    }
}
